//https://leetcode-cn.com/problems/palindrome-number/
//简单
// 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
// 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。例如，121 是回文，而 123 不是。
// 示例 1：

// 输入：x = 121
// 输出：true
// 示例 2：

// 输入：x = -121
// 输出：false
// 解释：从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
// 示例 3：

// 输入：x = 10
// 输出：false
// 解释：从右向左读, 为 01 。因此它不是一个回文数。
// 示例 4：

// 输入：x = -101
// 输出：false
//  

// 提示：

// -231 <= x <= 231 - 1
//  

// 进阶：你能不将整数转为字符串来解决这个问题吗？

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/palindrome-number
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
#define M 100
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;

class Solution
{
public:
    //将数字直接反转
    bool solute2(int x)
    {
        int copy = x;
        if (x < 0)
        {
            return false;
        }
        if (!x)
        {
            return true;
        }
        //普通正整数
        long num = 0;
        while (x > 0)
        {
            num = num * 10 + x % 10;
            x /= 10;
        }
        return copy == num;
    }
    bool solute1(int x)
    {
        //将x变为字符串
        string str = to_string(x);
        //将字符串反转
        std::reverse(str.begin(), str.end());
        string origin = to_string(x);
        //也可以将反转后的字符串转为数字，但可能会溢出 则stoi(str)==x&&stoi(str)==stol(str)
        return origin == str;
    }
    bool isPalindrome(int x)
    {
        return solute2(121);
        // //为负数
        // if(x<0){
        //     return false;
        // }
        // //将数字转为字符串
        // char array[M];
        // memset(array,-1,sizeof(array));
        // int use=0;
        // while(x!=0){
        //     //取个位
        //     int temp=x%10;
        //     x/=10;
        //     //放进array
        //     array[use++]=temp;
        // }
        // //检测array
        // int start=0,end=use-1;
        // while(start<end){
        //     if(array[start]==array[end]){
        //         start++;
        //         end--;
        //     }else{
        //         break;
        //     }
        // }
        // return start>=end;
    }
};

int main(int argc, char **argv)
{
    Solution *solution = new Solution();
    solution->isPalindrome(121);
    delete solution;
    return 0;
}